package Excel;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.Date;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.Region;

import Util.connect;
import Util.util;

public class GeradorExcelBean implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private boolean ck_erro;

	public boolean isCk_erro() {
		return ck_erro;
	}

	public void setCk_erro(boolean ck_erro) {
		this.ck_erro = ck_erro;
	}

	public String GeradorExcel(int nr_jogo) throws SQLException, IOException,
			ParseException {
		String tx_nome_arquivo = "";
		String tx_tipo = ".xls";
		util u = new util();
		int cd_row = 4;
		connect c = new connect();
		Connection conn = connect.getMYSQLConnection();
		try {
			// Inicio - Excel
			HSSFWorkbook wb = new HSSFWorkbook();
			HSSFSheet sheet = wb.createSheet("Resultado");
			// FIM - Excel
			HSSFFont fontStyle = wb.createFont();
			fontStyle.setFontName("Calibri");
			fontStyle.setFontHeightInPoints((short) 12);
			fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

			HSSFFont fontNormal = wb.createFont();
			fontNormal.setFontName("Calibri");
			fontNormal.setFontHeightInPoints((short) 11);

			// Estilos
			HSSFCellStyle cellStyle = wb.createCellStyle();
			cellStyle.setFont(fontStyle);
			cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);

			HSSFCellStyle cellStyle2 = wb.createCellStyle();
			cellStyle2.setFont(fontStyle);
			cellStyle2.setAlignment(HSSFCellStyle.ALIGN_LEFT);

			HSSFCellStyle normal = wb.createCellStyle();
			normal.setFont(fontNormal);

			HSSFCellStyle normalcenter = wb.createCellStyle();
			normalcenter.setAlignment(HSSFCellStyle.ALIGN_CENTER);
			normal.setFont(fontNormal);

			StringBuffer tx_sql = new StringBuffer(
					"select vl_resultado from tab_jogo where nr_jogo ="
							+ nr_jogo);
			ResultSet rs = c.rs_mysql(conn, tx_sql.toString(), "Select");
			rs.next();
			String vl_resultado = u.listaInteiro(rs.getString("vl_resultado"))
					.toString();
			vl_resultado = vl_resultado.substring(1, vl_resultado.length() - 1);
			tx_sql.delete(0, tx_sql.length());

			HSSFRow row0 = sheet.createRow((short) 0);
			HSSFCell cell0 = row0.createCell(0);
			cell0.setCellStyle(cellStyle);
			cell0.setCellValue("Resultado Gu's Bingo");

			HSSFRow row = sheet.createRow(1);
			HSSFCell cell = row.createCell(0);
			Region rg = new Region();
			rg.setRowFrom(1);
			rg.setRowTo(1);
			rg.setColumnFrom((short) 0);
			rg.setColumnTo((short) 10);
			cell.setCellStyle(normal);
			cell.setCellValue(vl_resultado);

			HSSFRow row2 = sheet.createRow(3);
			HSSFCell cell2 = row2.createCell(0);
			cell2.setCellStyle(cellStyle);
			cell2.setCellValue("Cartelas");

			cell2 = row2.createCell(1);
			cell2.setCellStyle(cellStyle);
			cell2.setCellValue("Pontos");

			cell2 = row2.createCell(2);
			cell2.setCellStyle(cellStyle);
			cell2.setCellValue("Comprador");

			tx_sql.append("select vl_cartela,vl_pontos,tx_comprador FROM vw_resultados v where nr_jogo="
					+ nr_jogo);
			ResultSet rs_result = c.rs_mysql(conn, tx_sql.toString(), "Select");
			tx_sql.delete(0, tx_sql.length());

			while (rs_result.next()) {

				String vl_cartela = u.listaInteiro(
						rs_result.getString("vl_cartela")).toString();
				vl_cartela = vl_cartela.substring(1, vl_cartela.length() - 1);
				// aqui come�a o select jogando os resultados
				row2 = sheet.createRow(cd_row);
				cell2 = row2.createCell(0);
				cell2.setCellStyle(normal);
				cell2.setCellValue(vl_cartela);

				cell2 = row2.createCell(1);
				cell2.setCellStyle(normalcenter);
				cell2.setCellValue(rs_result.getInt("vl_pontos"));

				cell2 = row2.createCell(2);
				cell2.setCellStyle(normalcenter);
				cell2.setCellValue(rs_result.getString("tx_comprador"));
				cd_row++;
			}
			sheet.addMergedRegion(rg);

			// tendo o tamanho de colunas da tua tabela, por exemplo

			// no final, depois que vc construir toda a sua tabela, antes de
			// salvar
			for (int i = 0; i < 6; i++) {
				sheet.autoSizeColumn((short) i);
			}

			tx_nome_arquivo = u.getDiaSemana(new Date());
			String diretorio = System.getProperty("user.home");
			FileOutputStream fileOut = new FileOutputStream(diretorio + "/"
					+ tx_nome_arquivo + tx_tipo);
			wb.write(fileOut);
			fileOut.close();
		} catch (Exception e) {
			System.out.print(cd_row + " " + e);

		}
		conn.close();
		return tx_nome_arquivo + tx_tipo;
	}

}